## 复习
### 数组的常用方法
- 数组创建 
    - 字面量
    - 内置构造函数
        - 一个参数的时候会创建空数组
- 数组增
    - unshift
    - push
    - splice
- 数组删除
    - shift
    - splice(开始的索引,删除个数,新增内容)
    - pop
    - arr.length -1;
- 数组其他方法
    - 判断某个值所有的索引 indexOf(“值”)
        - 如果没有返还-1
    - 把数组连接成字符串 join("符号")
        - 把字符串切割成数组  字符串.split("");
    - 多个数组连接在一起 arr1.concat(arr2,arr3)
    - 数组的反转 arr.reverse();
    - 数组的排序 sort
```js
arr.sort(function(a,b){return a - b;})
```
### 数组的塌陷 
    - 可以规避数组塌陷：不要循环一个数组同时操作它 
### 排序 
    - 冒泡排序 ： 比较前一项和后一项的大小 如果前一项大于后一项 就互换位置 ，重复这个过程最终排好数组；
    - 选择排序： 找到最小值的索引 和第一个互换位置 最终排好数据
### 传值和传址
    - 简单数据类型传值
    - 复杂数据类型 传址 ：数组和对象 引用问题
        - vue  data:{name:"张三"}
        - 解决引用问题 
            - 递归深拷贝
            - json转换 ：JSON.stringify() ,JSON.parse();
### this关键字 
    - 不要关注this的定义关注调用 
    - 全局this  执行window
    - 函数里的this
        - 直接调用  window
        - 对象里调用 
            - 对象.函数(); 指向对象
            - var myfn = 对象.函数; myfn() 指向window
        - 事件里的函数this 指向事件源 
```js
document.onclick = function(){
    console.log(this);  //document
}

```
